/*     */ package com.iris.egrant.orm;
/*     */ 
/*     */ import com.iris.egrant.utils.ReflectionUtils;
/*     */ import java.util.Date;
/*     */ import org.apache.commons.lang.StringUtils;
/*     */ import org.springframework.util.Assert;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ public class PropertyFilter
/*     */ {
/*     */   public static final String OR_SEPARATOR = "_OR_";
/*     */   
/*     */   public enum MatchType
/*     */   {
/*  29 */     EQ, LIKE, LT, GT, LE, GE;
/*     */   }
/*     */ 
/*     */ 
/*     */   
/*     */   public enum PropertyType
/*     */   {
/*  36 */     S(String.class), I(Integer.class), L(Long.class), N(Double.class), D(Date.class), B(Boolean.class);
/*     */     
/*     */     private Class<?> clazz;
/*     */     
/*     */     PropertyType(Class<?> clazz) {
/*  41 */       this.clazz = clazz;
/*     */     }
/*     */     
/*     */     public Class<?> getValue() {
/*  45 */       return this.clazz;
/*     */     }
/*     */   }
/*     */   
/*  49 */   private String[] propertyNames = null;
/*  50 */   private Class<?> propertyType = null;
/*  51 */   private Object propertyValue = null;
/*  52 */   private MatchType matchType = MatchType.EQ;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public PropertyFilter() {}
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public PropertyFilter(String filterName, Object value) {
/*  65 */     String matchTypeStr = StringUtils.substringBefore(filterName, "_");
/*  66 */     String matchTypeCode = StringUtils.substring(matchTypeStr, 0, matchTypeStr.length() - 1);
/*  67 */     String propertyTypeCode = StringUtils.substring(matchTypeStr, matchTypeStr.length() - 1, matchTypeStr.length());
/*     */     try {
/*  69 */       this.matchType = Enum.<MatchType>valueOf(MatchType.class, matchTypeCode);
/*  70 */     } catch (RuntimeException e) {
/*  71 */       throw new IllegalArgumentException("filter名称" + filterName + "没有按规则编写,无法得到属性比较类型.", e);
/*     */     } 
/*     */     
/*     */     try {
/*  75 */       this.propertyType = ((PropertyType)Enum.<PropertyType>valueOf(PropertyType.class, propertyTypeCode)).getValue();
/*  76 */     } catch (RuntimeException e) {
/*  77 */       throw new IllegalArgumentException("filter名称" + filterName + "没有按规则编写,无法得到属性值类型.", e);
/*     */     } 
/*     */     
/*  80 */     String propertyNameStr = StringUtils.substringAfter(filterName, "_");
/*  81 */     this.propertyNames = StringUtils.split(propertyNameStr, "_OR_");
/*     */     
/*  83 */     Assert.isTrue((this.propertyNames.length > 0), "filter名称" + filterName + "没有按规则编写,无法得到属性名称.");
/*     */     
/*  85 */     this.propertyValue = ReflectionUtils.convertValue(value, this.propertyType);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public boolean isMultiProperty() {
/*  92 */     return (this.propertyNames.length > 1);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public String[] getPropertyNames() {
/*  99 */     return this.propertyNames;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public String getPropertyName() {
/* 106 */     if (this.propertyNames.length > 1)
/* 107 */       throw new IllegalArgumentException("There are not only one property"); 
/* 108 */     return this.propertyNames[0];
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public Object getPropertyValue() {
/* 115 */     return this.propertyValue;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public Class<?> getPropertyType() {
/* 122 */     return this.propertyType;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public MatchType getMatchType() {
/* 129 */     return this.matchType;
/*     */   }
/*     */ }


/* Location:              D:\文件kjt\WEB-INF\lib\egrant-core-2.2.20240205.1659.jar!\com\iris\egrant\orm\PropertyFilter.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       1.1.3
 */